home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HyperLib 1997 Winter - Disc 1
/
HYPERLIB-1997-Winter-CD1.ISO.7z
/
HYPERLIB-1997-Winter-CD1.ISO
/
オンラインウェア
/
UTIL
/
ES 1.2 Package.sit
/
ES 1.2 Package
/
Developer’s toolkit
/
Why ES savvy modules?
< prev
Wrap
Text File
|
1995-12-09
|
3KB
|
69 lines
{ /*
・ As posted to comp.sys.mac.programmer.info:
- supports PPC native modules. (The Control Strip traps are linked to
ExtensionsStripLib, a shared library.)
- safe sending of AppleEvents, new drags, ect. (Made possible because modules
can request a piece of Extensions Strip's application context.)
- event record checking/modification. Modules can look at the current event
record whenever they are called. Modules can also request to peek at and modify
all events, like jGNE filters do, but with an event mask to cut down on
overhead.
- better environment recognition. Modules can obtain their total real estate on
the strip and can sense the strip's orientation and color scheme.
- greater overall freedom. Modules can display an area of any size, request not
to be hilited when clicked, and can even change their features at any time.
・ "ES compatible" checklist:
- All memory that was ever permanently allocated is disposed of when the
sdevCloseModule selector is called.
- Modules that draw text return a display width based upon a calculation of
the string's width. This is also a requirement for modules under Control Strip
version 1.2 and later because of the strip's configurable font/size.
- All dialogs are loaded/created "on the fly". Not doing so, as Apple's
FileSharing & AppleTalk modules currently do, make the windows context-dependent
of the process they loaded in. BTW, these modules will crash under Control Strip
if you quit the Finder. That's Apple for you.
・ "ES savvy" checklist for existing modules:
- All AppleEvents are sent safely (SBSimpleAESend() is the easiest way to do
this.)
- The sdevDontPeriodicTickle bit is returned with the features if no idle events
are required. Be nice and return this if you don't need idle time!
- Modifier key and mouse position checks are performed by reading from the event
record with a call to SBGetCurrentEvent(). This ensures that the user's
wishes are carried out. If they, for instance, click on your module with
the shift key down while the CPU was busy, then your module can tell that the
shift key actually was down for the click, even though the key may have been
released before your module finally got called.
- Support of ES' integrated drag stuff:
1. return the sdevHasDragHandlers bit with the features if a drag handler
is installed.
2. use the sdevDragAccept selector to return whether your drag handler(s)
accept the current drag or not.
3. the drag handler(s) call SBGetTotalModuleBounds() to find the total
dragable space.
4. new drags are started from within ES' context so that they may leave
the strip.
- Alias resolving is performed intelligently. See the "Intelligent Alias
Resolving" section of the Programming Notes file for info on this.
- Any other ES API stuff is supported by the module.
*/ }